package com.ruoyi.factorydata.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.factorydata.domain.CraftProcessRelation;
import com.ruoyi.factorydata.domain.CraftRoute;
import com.ruoyi.factorydata.domain.dto.CraftRouteDTO;
import com.ruoyi.factorydata.domain.vo.CraftRouteVo;

import java.util.List;
import java.util.Map;

/**
 * 工艺路线Service接口
 *
 * @author ruoyi
 * @date 2025-07-15
 */
public interface ICraftRouteService extends IService<CraftRoute> {
    /**
     * 查询工艺路线
     *
     * @param id 工艺路线主键
     * @return 工艺路线
     */
    public CraftRouteVo selectCraftRouteById(String id);

    /**
     * 查询工艺路线相关信息
     *
     * @param craftProcessRelation 工艺工序关系
     * @return 工艺路线相关信息
     */
    CraftRouteVo selectByCraftProcessRelation(CraftProcessRelation craftProcessRelation);

    List<CraftRouteVo> selectByIdsOrProcessIds(List<Long> ids, List<Long> processIds);

    /**
     * 查询工艺路线列表
     *
     * @param craftRoute 工艺路线
     * @return 工艺路线集合
     */
    public List<CraftRouteVo> selectCraftRouteList(CraftRoute craftRoute);

    List<CraftRouteVo> selectCraftRouteListByIds(List<Long> ids);

    /**
     * 新增工艺路线
     *
     * @param craftRouteDTO 工艺路线
     * @return 结果
     */
    public int insertCraftRoute(CraftRouteDTO craftRouteDTO);

    /**
     * 修改工艺路线
     *
     * @param craftRouteDTO 工艺路线
     * @return 结果
     */
    public int updateCraftRoute(CraftRouteDTO craftRouteDTO);

    /**
     * 批量删除工艺路线
     *
     * @param ids 需要删除的工艺路线主键集合
     * @return 结果
     */
    public int deleteCraftRouteByIds(String[] ids);

    /**
     * 删除工艺路线信息
     *
     * @param id 工艺路线主键
     * @return 结果
     */
    public int deleteCraftRouteById(String id);

    /**
     * 根据工艺路线id获取工艺路线名称
     *
     * @param craftRouteId 工艺路线id
     * @param craftRouteNameMap 工艺路线名称缓存
     * @return 工艺路线名称
     */
    String getNameByIdAndCache(Long craftRouteId, Map<Long, String> craftRouteNameMap);
}